其他
Pulsarctl 介绍
🎙️阅读本文需要 5 分钟
pulsar-admin 需要更多的依赖,在运行时需要加载 JVM 等环境,因此命令在执行时需要较长的时间; pulsar-admin 对命令的描述信息不全面,使用过程中出现错误时,不能快速准确的定位到相应问题,给用户使用带来不便。
// Client provides a client to the Pulsar Restful API
type Client interface {
Clusters() Clusters
Functions() Functions
Tenants() Tenants
Topics() Topics
Subscriptions() Subscriptions
Sources() Sources
Sinks() Sinks
Namespaces() Namespaces
Schemas() Schema
Brokers() Brokers
BrokerStats() BrokerStats
}
config := &pulsar.Config{
WebServiceURL: “http://localhost:8080”,
HTTPClient: http.DefaultClient,
// If the server enable the TLSAuth
// Auth: auth.NewAuthenticationTLS()
// If the server enable the TokenAuth
// TokenAuth: auth.NewAuthenticationToken()
}
// the default NewPulsarClient will use v2 APIs. If you need to request other version APIs,
// you can specified the API version like this:
// admin := cmdutils.NewPulsarClientWithAPIVersion(pulsar.V2)
admin, err := pulsar.New(config)
if err != nil {
// handle the err
return
}
// more APIs, you can find them in the pkg/pulsar/admin.go
// You can find all the method in the pkg/pulsar
clusters, err := admin.Clusters().List()
if err != nil {
// handle the error
}
// handle the result
fmt.Println(clusters)
Used for : 对该命令的使用场景进行描述 Required Permission:使用该命令所需要的权限 Output:列出使用该命令所有的输出信息,包括正确的输出和错误的输出 Examples:列出命令的使用示例
整合原有 topics 命令中的 partitioned-topics 和 topics 命令,输出信息更易懂、易用。
在 pulsarctl 中,将 subscription 相关的命令提取为一个新的命令组 —— subscription。而 pulsar-admin 中,subscription 的相关命令是作为 topics 的子命令,用户使用并不方便。
在 pulsarctl 中,优化了特殊字符的使用。在 pulsar-admin 中,有时用户需要在 shell 中输入 json-string,这个易用性不是很好。以 functions putstate 为例,二者对比如下:
📖Github: 🔗https://github.com/streamnative/pulsarctl
🔗https://github.com/streamnative/pulsarctl/blob/master/CONTRIBUTING.md